home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 July: Mac OS SDK / Dev.CD Jul 97 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Interfaces / CIncludes / Terminals.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-06  |  15.3 KB  |  381 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Terminals.h
  3.  
  4.      Contains:    Communications Toolbox Terminal tool Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.1.3
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __TERMINALS__
  21. #define __TERMINALS__
  22.  
  23.  
  24. #ifndef __DIALOGS__
  25. #include <Dialogs.h>
  26. #endif
  27. /*    #include <Errors.h>                                            */
  28. /*        #include <ConditionalMacros.h>                            */
  29. /*    #include <Memory.h>                                            */
  30. /*        #include <Types.h>                                        */
  31. /*        #include <MixedMode.h>                                    */
  32. /*    #include <Menus.h>                                            */
  33. /*        #include <Quickdraw.h>                                    */
  34. /*            #include <QuickdrawText.h>                            */
  35. /*    #include <Controls.h>                                        */
  36. /*    #include <Windows.h>                                        */
  37. /*        #include <Events.h>                                        */
  38. /*            #include <OSUtils.h>                                */
  39. /*    #include <TextEdit.h>                                        */
  40.  
  41. #ifndef __CTBUTILITIES__
  42. #include <CTBUtilities.h>
  43. #endif
  44. /*    #include <StandardFile.h>                                    */
  45. /*        #include <Files.h>                                        */
  46. /*            #include <Finder.h>                                    */
  47. /*    #include <AppleTalk.h>                                        */
  48.  
  49. #ifndef __CONNECTIONS__
  50. #include <Connections.h>
  51. #endif
  52.  
  53. #ifdef __cplusplus
  54. extern "C" {
  55. #endif
  56.  
  57. #if PRAGMA_ALIGN_SUPPORTED
  58. #pragma options align=mac68k
  59. #endif
  60.  
  61. #if PRAGMA_IMPORT_SUPPORTED
  62. #pragma import on
  63. #endif
  64.  
  65.  
  66. enum {
  67. /* current Terminal Manager version     */
  68.     curTMVersion                = 2,
  69. /* current Terminal Manager Environment Record version     */
  70.     curTermEnvRecVers            = 0,
  71. /* error codes    */
  72.     tmGenericError                = -1,
  73.     tmNoErr                        = 0,
  74.     tmNotSent                    = 1,
  75.     tmEnvironsChanged            = 2,
  76.     tmNotSupported                = 7,
  77.     tmNoTools                    = 8
  78. };
  79.  
  80. typedef OSErr TMErr;
  81.  
  82.  
  83. enum {
  84.     tmInvisible                    = 1 << 0,
  85.     tmSaveBeforeClear            = 1 << 1,
  86.     tmNoMenus                    = 1 << 2,
  87.     tmAutoScroll                = 1 << 3,
  88.     tmConfigChanged                = 1 << 4
  89. };
  90.  
  91. typedef unsigned long TMFlags;
  92.  
  93.  
  94. enum {
  95.     selTextNormal                = 1 << 0,
  96.     selTextBoxed                = 1 << 1,
  97.     selGraphicsMarquee            = 1 << 2,
  98.     selGraphicsLasso            = 1 << 3,
  99.     tmSearchNoDiacrit            = 1 << 8,
  100.     tmSearchNoCase                = 1 << 9
  101. };
  102.  
  103. typedef unsigned short TMSearchTypes;
  104.  
  105. typedef short TMSelTypes;
  106.  
  107.  
  108. enum {
  109.     cursorText                    = 1,
  110.     cursorGraphics                = 2
  111. };
  112.  
  113. typedef unsigned short TMCursorTypes;
  114.  
  115.  
  116. enum {
  117.     tmTextTerminal                = 1 << 0,
  118.     tmGraphicsTerminal            = 1 << 1
  119. };
  120.  
  121. typedef unsigned short TMTermTypes;
  122.  
  123. struct TermDataBlock {
  124.     TMTermTypes                        flags;
  125.     Handle                            theData;
  126.     Handle                            auxData;
  127.     long                            reserved;
  128. };
  129. typedef struct TermDataBlock TermDataBlock;
  130.  
  131. typedef TermDataBlock *TermDataBlockPtr, **TermDataBlockH, **TermDataBlockHandle;
  132.  
  133. struct TermEnvironRec {
  134.     short                            version;
  135.     TMTermTypes                        termType;
  136.     short                            textRows;
  137.     short                            textCols;
  138.     Point                            cellSize;
  139.     Rect                            graphicSize;
  140.     Point                            slop;
  141.     Rect                            auxSpace;
  142. };
  143. typedef struct TermEnvironRec TermEnvironRec;
  144.  
  145. typedef TermEnvironRec *TermEnvironPtr;
  146.  
  147. union TMSelection {
  148.     Rect                            selRect;
  149.     RgnHandle                        selRgnHandle;
  150. };
  151. typedef union TMSelection TMSelection;
  152.  
  153. typedef struct TermRecord TermRecord, *TermPtr, **TermHandle;
  154.  
  155. typedef pascal long (*TerminalSendProcPtr)(Ptr thePtr, long theSize, long refCon, CMFlags flags);
  156. typedef pascal void (*TerminalBreakProcPtr)(long duration, long refCon);
  157. typedef pascal long (*TerminalCacheProcPtr)(long refCon, TermDataBlockPtr theTermData);
  158. typedef pascal void (*TerminalSearchCallBackProcPtr)(TermHandle hTerm, short refNum, Rect *foundRect);
  159. typedef pascal Boolean (*TerminalClikLoopProcPtr)(long refCon);
  160. typedef pascal CMErr (*TerminalEnvironsProcPtr)(long refCon, ConnEnvironRec *theEnvirons);
  161. typedef pascal void (*TerminalChooseIdleProcPtr)(void);
  162. typedef pascal long (*TerminalToolDefProcPtr)(TermHandle hTerm, short msg, long p1, long p2, long p3);
  163.  
  164. #if GENERATINGCFM
  165. typedef UniversalProcPtr TerminalSendUPP;
  166. typedef UniversalProcPtr TerminalBreakUPP;
  167. typedef UniversalProcPtr TerminalCacheUPP;
  168. typedef UniversalProcPtr TerminalSearchCallBackUPP;
  169. typedef UniversalProcPtr TerminalClikLoopUPP;
  170. typedef UniversalProcPtr TerminalEnvironsUPP;
  171. typedef UniversalProcPtr TerminalChooseIdleUPP;
  172. typedef UniversalProcPtr TerminalToolDefUPP;
  173. #else
  174. typedef TerminalSendProcPtr TerminalSendUPP;
  175. typedef TerminalBreakProcPtr TerminalBreakUPP;
  176. typedef TerminalCacheProcPtr TerminalCacheUPP;
  177. typedef TerminalSearchCallBackProcPtr TerminalSearchCallBackUPP;
  178. typedef TerminalClikLoopProcPtr TerminalClikLoopUPP;
  179. typedef TerminalEnvironsProcPtr TerminalEnvironsUPP;
  180. typedef TerminalChooseIdleProcPtr TerminalChooseIdleUPP;
  181. typedef TerminalToolDefProcPtr TerminalToolDefUPP;
  182. #endif
  183.  
  184. struct TermRecord {
  185.     short                            procID;
  186.     TMFlags                            flags;
  187.     TMErr                            errCode;
  188.     long                            refCon;
  189.     long                            userData;
  190.     TerminalToolDefUPP                defProc;
  191.     Ptr                                config;
  192.     Ptr                                oldConfig;
  193.     TerminalEnvironsUPP                environsProc;
  194.     long                            reserved1;
  195.     long                            reserved2;
  196.     Ptr                                tmPrivate;
  197.     TerminalSendUPP                    sendProc;
  198.     TerminalBreakUPP                breakProc;
  199.     TerminalCacheUPP                cacheProc;
  200.     TerminalClikLoopUPP                clikLoop;
  201.     WindowPtr                        owner;
  202.     Rect                            termRect;
  203.     Rect                            viewRect;
  204.     Rect                            visRect;
  205.     long                            lastIdle;
  206.     TMSelection                        selection;
  207.     TMSelTypes                        selType;
  208.     long                            mluField;
  209. };
  210. enum {
  211.     uppTerminalSendProcInfo = kPascalStackBased
  212.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  213.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  214.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  215.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  216.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(CMFlags))),
  217.     uppTerminalBreakProcInfo = kPascalStackBased
  218.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  219.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  220.     uppTerminalCacheProcInfo = kPascalStackBased
  221.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  222.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  223.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(TermDataBlockPtr))),
  224.     uppTerminalSearchCallBackProcInfo = kPascalStackBased
  225.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TermHandle)))
  226.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  227.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*))),
  228.     uppTerminalClikLoopProcInfo = kPascalStackBased
  229.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  230.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
  231.     uppTerminalEnvironsProcInfo = kPascalStackBased
  232.          | RESULT_SIZE(SIZE_CODE(sizeof(CMErr)))
  233.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  234.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(ConnEnvironRec*))),
  235.     uppTerminalChooseIdleProcInfo = kPascalStackBased,
  236.     uppTerminalToolDefProcInfo = kPascalStackBased
  237.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  238.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TermHandle)))
  239.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  240.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  241.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  242.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long)))
  243. };
  244.  
  245. #if GENERATINGCFM
  246. #define NewTerminalSendProc(userRoutine)        \
  247.         (TerminalSendUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalSendProcInfo, GetCurrentArchitecture())
  248. #define NewTerminalBreakProc(userRoutine)        \
  249.         (TerminalBreakUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalBreakProcInfo, GetCurrentArchitecture())
  250. #define NewTerminalCacheProc(userRoutine)        \
  251.         (TerminalCacheUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalCacheProcInfo, GetCurrentArchitecture())
  252. #define NewTerminalSearchCallBackProc(userRoutine)        \
  253.         (TerminalSearchCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalSearchCallBackProcInfo, GetCurrentArchitecture())
  254. #define NewTerminalClikLoopProc(userRoutine)        \
  255.         (TerminalClikLoopUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalClikLoopProcInfo, GetCurrentArchitecture())
  256. #define NewTerminalEnvironsProc(userRoutine)        \
  257.         (TerminalEnvironsUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalEnvironsProcInfo, GetCurrentArchitecture())
  258. #define NewTerminalChooseIdleProc(userRoutine)        \
  259.         (TerminalChooseIdleUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalChooseIdleProcInfo, GetCurrentArchitecture())
  260. #define NewTerminalToolDefProc(userRoutine)        \
  261.         (TerminalToolDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalToolDefProcInfo, GetCurrentArchitecture())
  262. #else
  263. #define NewTerminalSendProc(userRoutine)        \
  264.         ((TerminalSendUPP) (userRoutine))
  265. #define NewTerminalBreakProc(userRoutine)        \
  266.         ((TerminalBreakUPP) (userRoutine))
  267. #define NewTerminalCacheProc(userRoutine)        \
  268.         ((TerminalCacheUPP) (userRoutine))
  269. #define NewTerminalSearchCallBackProc(userRoutine)        \
  270.         ((TerminalSearchCallBackUPP) (userRoutine))
  271. #define NewTerminalClikLoopProc(userRoutine)        \
  272.         ((TerminalClikLoopUPP) (userRoutine))
  273. #define NewTerminalEnvironsProc(userRoutine)        \
  274.         ((TerminalEnvironsUPP) (userRoutine))
  275. #define NewTerminalChooseIdleProc(userRoutine)        \
  276.         ((TerminalChooseIdleUPP) (userRoutine))
  277. #define NewTerminalToolDefProc(userRoutine)        \
  278.         ((TerminalToolDefUPP) (userRoutine))
  279. #endif
  280.  
  281. #if GENERATINGCFM
  282. #define CallTerminalSendProc(userRoutine, thePtr, theSize, refCon, flags)        \
  283.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalSendProcInfo, (thePtr), (theSize), (refCon), (flags))
  284. #define CallTerminalBreakProc(userRoutine, duration, refCon)        \
  285.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalBreakProcInfo, (duration), (refCon))
  286. #define CallTerminalCacheProc(userRoutine, refCon, theTermData)        \
  287.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalCacheProcInfo, (refCon), (theTermData))
  288. #define CallTerminalSearchCallBackProc(userRoutine, hTerm, refNum, foundRect)        \
  289.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalSearchCallBackProcInfo, (hTerm), (refNum), (foundRect))
  290. #define CallTerminalClikLoopProc(userRoutine, refCon)        \
  291.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalClikLoopProcInfo, (refCon))
  292. #define CallTerminalEnvironsProc(userRoutine, refCon, theEnvirons)        \
  293.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalEnvironsProcInfo, (refCon), (theEnvirons))
  294. #define CallTerminalChooseIdleProc(userRoutine)        \
  295.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalChooseIdleProcInfo)
  296. #define CallTerminalToolDefProc(userRoutine, hTerm, msg, p1, p2, p3)        \
  297.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalToolDefProcInfo, (hTerm), (msg), (p1), (p2), (p3))
  298. #else
  299. #define CallTerminalSendProc(userRoutine, thePtr, theSize, refCon, flags)        \
  300.         (*(userRoutine))((thePtr), (theSize), (refCon), (flags))
  301. #define CallTerminalBreakProc(userRoutine, duration, refCon)        \
  302.         (*(userRoutine))((duration), (refCon))
  303. #define CallTerminalCacheProc(userRoutine, refCon, theTermData)        \
  304.         (*(userRoutine))((refCon), (theTermData))
  305. #define CallTerminalSearchCallBackProc(userRoutine, hTerm, refNum, foundRect)        \
  306.         (*(userRoutine))((hTerm), (refNum), (foundRect))
  307. #define CallTerminalClikLoopProc(userRoutine, refCon)        \
  308.         (*(userRoutine))((refCon))
  309. #define CallTerminalEnvironsProc(userRoutine, refCon, theEnvirons)        \
  310.         (*(userRoutine))((refCon), (theEnvirons))
  311. #define CallTerminalChooseIdleProc(userRoutine)        \
  312.         (*(userRoutine))()
  313. #define CallTerminalToolDefProc(userRoutine, hTerm, msg, p1, p2, p3)        \
  314.         (*(userRoutine))((hTerm), (msg), (p1), (p2), (p3))
  315. #endif
  316.  
  317. extern pascal TMErr InitTM(void);
  318. extern pascal Handle TMGetVersion(TermHandle hTerm);
  319. extern pascal short TMGetTMVersion(void);
  320. extern pascal TermHandle TMNew(const Rect *termRect, const Rect *viewRect, TMFlags flags, short procID, WindowPtr owner, TerminalSendUPP sendProc, TerminalCacheUPP cacheProc, TerminalBreakUPP breakProc, TerminalClikLoopUPP clikLoop, TerminalEnvironsUPP environsProc, long refCon, long userData);
  321. extern pascal void TMDispose(TermHandle hTerm);
  322. extern pascal void TMKey(TermHandle hTerm, const EventRecord *theEvent);
  323. extern pascal void TMUpdate(TermHandle hTerm, RgnHandle visRgn);
  324. extern pascal void TMPaint(TermHandle hTerm, const TermDataBlock *theTermData, const Rect *theRect);
  325. extern pascal void TMActivate(TermHandle hTerm, Boolean activate);
  326. extern pascal void TMResume(TermHandle hTerm, Boolean resume);
  327. extern pascal void TMClick(TermHandle hTerm, const EventRecord *theEvent);
  328. extern pascal void TMIdle(TermHandle hTerm);
  329. extern pascal long TMStream(TermHandle hTerm, void *theBuffer, long theLength, CMFlags flags);
  330. extern pascal Boolean TMMenu(TermHandle hTerm, short menuID, short item);
  331. extern pascal void TMReset(TermHandle hTerm);
  332. extern pascal void TMClear(TermHandle hTerm);
  333. extern pascal void TMResize(TermHandle hTerm, const Rect *newViewRect);
  334. extern pascal long TMGetSelect(TermHandle hTerm, Handle theData, ResType *theType);
  335. extern pascal void TMGetLine(TermHandle hTerm, short lineNo, TermDataBlock *theTermData);
  336. extern pascal void TMSetSelection(TermHandle hTerm, const TMSelection *theSelection, TMSelTypes selType);
  337. extern pascal void TMScroll(TermHandle hTerm, short dh, short dv);
  338. extern pascal Boolean TMValidate(TermHandle hTerm);
  339. extern pascal void TMDefault(Ptr *theConfig, short procID, Boolean allocate);
  340. extern pascal Handle TMSetupPreflight(short procID, long *magicCookie);
  341. extern pascal void TMSetupSetup(short procID, const void *theConfig, short count, DialogPtr theDialog, long *magicCookie);
  342. extern pascal Boolean TMSetupFilter(short procID, const void *theConfig, short count, DialogPtr theDialog, EventRecord *theEvent, short *theItem, long *magicCookie);
  343. extern pascal void TMSetupItem(short procID, const void *theConfig, short count, DialogPtr theDialog, short *theItem, long *magicCookie);
  344. extern pascal void TMSetupXCleanup(short procID, const void *theConfig, short count, DialogPtr theDialog, Boolean OKed, long *magicCookie);
  345. extern pascal void TMSetupPostflight(short procID);
  346. extern pascal Ptr TMGetConfig(TermHandle hTerm);
  347. extern pascal short TMSetConfig(TermHandle hTerm, const void *thePtr);
  348. extern pascal OSErr TMIntlToEnglish(TermHandle hTerm, const void *inputPtr, Ptr *outputPtr, short language);
  349. extern pascal OSErr TMEnglishToIntl(TermHandle hTerm, const void *inputPtr, Ptr *outputPtr, short language);
  350. extern pascal void TMGetToolName(short id, Str255 name);
  351. extern pascal short TMGetProcID(ConstStr255Param name);
  352. extern pascal void TMSetRefCon(TermHandle hTerm, long refCon);
  353. extern pascal long TMGetRefCon(TermHandle hTerm);
  354. extern pascal void TMSetUserData(TermHandle hTerm, long userData);
  355. extern pascal long TMGetUserData(TermHandle hTerm);
  356. extern pascal short TMAddSearch(TermHandle hTerm, ConstStr255Param theString, const Rect *where, TMSearchTypes searchType, TerminalSearchCallBackUPP callBack);
  357. extern pascal void TMRemoveSearch(TermHandle hTerm, short refnum);
  358. extern pascal void TMClearSearch(TermHandle hTerm);
  359. extern pascal Point TMGetCursor(TermHandle hTerm, TMCursorTypes cursType);
  360. extern pascal TMErr TMGetTermEnvirons(TermHandle hTerm, TermEnvironRec *theEnvirons);
  361. extern pascal short TMChoose(TermHandle *hTerm, Point where, TerminalChooseIdleUPP idleProc);
  362. extern pascal void TMEvent(TermHandle hTerm, const EventRecord *theEvent);
  363. extern pascal Boolean TMDoTermKey(TermHandle hTerm, ConstStr255Param theKey);
  364. extern pascal short TMCountTermKeys(TermHandle hTerm);
  365. extern pascal void TMGetIndTermKey(TermHandle hTerm, short id, Str255 theKey);
  366. extern pascal void TMGetErrorString(TermHandle hTerm, short id, Str255 errMsg);
  367.  
  368. #if PRAGMA_IMPORT_SUPPORTED
  369. #pragma import off
  370. #endif
  371.  
  372. #if PRAGMA_ALIGN_SUPPORTED
  373. #pragma options align=reset
  374. #endif
  375.  
  376. #ifdef __cplusplus
  377. }
  378. #endif
  379.  
  380. #endif /* __TERMINALS__ */
  381.